热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

0-1背包问题(递归实现)

<pre><prenamecode><span>#include<io
#include
#include
#include
#include
#include
using namespace std;

/*
*0-1背包问题(递归实现)
*/
//int * * values;//values[i][j]表示在前i个物品中能够装入容量为j的背包中的物品的最大值  (二维数组方案一)
vector> values;//values[i][j]表示在前i个物品中能够装入容量为j的背包中的物品的最大值   (二维数组方案二)

int knapsack(vector& w,vector& v,int i,int vol)
{
	if(i==0||vol==0)
		return values[i][vol] = 0;
	if(vol=w[i])
	{
		int fi = knapsack(w,v,i-1,vol);
		int se = knapsack(w,v,i-1,vol-w[i])+v[i];
		return values[i][vol] = max(fi,se);
	}
}

void PrintRes(vector& w,int i,int vol)
{
	if(i<=0)
		return ;
	if(values[i][vol]>values[i-1][vol])
	{
	  PrintRes(w,i-1,vol-w[i]);
	  cout< w;//物品的重量
	vector v;//物品的价值
	int vol;
	w.push_back(0);//
	v.push_back(0);//
	copy(istream_iterator(cin),istream_iterator(),back_inserter(w));
	cin.clear();
	cin.sync();
	copy(istream_iterator(cin),istream_iterator(),back_inserter(v));
	cin.clear();
	cin.sync();
	cin>>vol;

	//创建和初始化v数组
	/*values = new int*[w.size()];    (二维数组方案一)
	for (int i = 0; i >(w.size(),vector(vol+1));
	//运行查找解决方案的函数
	knapsack(w,v,w.size()-1,vol);
	//输出0-1背包结果
	PrintRes(w,w.size()-1,vol);
}

   输入示例:

   第一行输入各个物品的重量

   第二行输入各个物品的价值

   第三行输入背包的最大承受重量




推荐阅读
  • 在探讨链表之前,我们先讨论一个编程中常见的问题:如何在程序执行过程中有效管理变量。当需要在后续代码中继续使用某个变量时,可以通过局部变量来保存其值。然而,对于更复杂的数据管理和动态调整的需求,链表则提供了一种高效的解决方案。本文将详细介绍链表的设计原理,并通过Java语言手动实现`LinkedList`类,帮助读者深入理解链表的工作机制及其应用场景。 ... [详细]
  • 在2015年世界总决赛的Tours问题中,参赛者面临一个包含n个节点和m条边的无向图挑战。任务是选定一种颜色数量k,并使用这些颜色为每条边着色。核心要求是在图中的任何简单循环中,每种颜色的边数必须相等。该研究对竞赛路线进行了全面分析,探讨了满足条件的所有可能的着色方案。 ... [详细]
  • Candyland的糖果公园以其独特的结构吸引了众多喜爱糖果的小朋友。公园内设有多个游览点,每个点不仅景色宜人,还提供免费的糖果。这些游览点通过复杂的路径连接,形成了一棵包含n个节点的树状结构。为了优化游客体验,公园管理团队采用了一种基于树上动态修改的莫队算法,有效提升了糖果发放和游玩项目的管理效率。 ... [详细]
  • 在牛客网的小叶日常巡查与维护工作中,遇到一道关于图论的问题:给定一个无向图,需要求解图中任意两点间的最大路径长度。解决方法是首先选取任意节点P作为起点进行深度优先搜索(DFS),找到距离P最远的节点Q,再以Q为新的起点重复上述过程,最终得到的最大值即为所求的最大路径长度。这种方法有效地避免了对所有节点两两组合的暴力求解,提高了算法效率。 ... [详细]
  • 本文探讨了如何使用Python实现散列表(即哈希表)的直接地址技术,通过键值对快速定位内存中的数据存储位置,提高了数据检索的效率。该方法利用哈希函数将键映射到特定的数组索引,从而实现快速存取操作。 ... [详细]
  • 如何利用C语言进行高效的商品管理程序设计与开发
    本文详细探讨了使用C语言高效开发商品管理系统的技巧与方法。通过简洁明了的代码示例,文章逐步引导读者掌握商品管理程序的设计与实现,适合初学者及有一定基础的开发者参考学习。 ... [详细]
  • Codeforces 1065D 解题心得与代码实现分析 ... [详细]
  • 在Android应用程序中,可以包含多个Activity,这些Activity彼此之间处于同一层级。当应用程序启动时,系统需要确定首先启动哪一个Activity。此外,某些应用程序可能需要在应用列表中显示,而另一些则不需要。本文将深入解析Manifest文件中的启动关联机制,探讨如何通过配置实现不同的启动行为和显示需求。 ... [详细]
  • [Offer收割]编程竞赛第8轮 A 小Ho的完美主义倾向
    题目链接:小Ho的完美主义倾向题目描述:小Ho在一条直线型的街道上漫步。这条街道由若干块长度为L的石板铺设而成,因此每隔L的距离就会出现一道石板间的接缝。小Ho对这些规律排列的接缝产生了浓厚的兴趣,他决定研究如何在这条街道上行走,以满足自己对完美路径的追求。本题要求在给定的约束条件下,计算出小Ho能够实现其目标的所有可能方案数。 ... [详细]
  • 算术表达式分析与解析技术初探
    本文初步探讨了算术表达式的分析与解析技术,针对作者在职业转型过程中发现自身算法基础薄弱的问题,决定在接下来的三个月内,系统地学习和掌握常用数据结构与算法,以提升个人技术能力。研究内容不仅涵盖了基本的算术表达式解析方法,还深入讨论了其在实际应用中的优化策略,为相关领域的进一步研究奠定了基础。 ... [详细]
  • 在Java的IO包中,提供了丰富的文件操作方法,包括文件的读取和写入功能。本文将详细探讨如何在Java中实现Map和List对象的文件存储技术。首先,我们将介绍如何编写一个方法,用于将单个对象写入文件,并进一步扩展到复杂的数据结构如Map和List的存储与读取。通过具体的代码示例和详细的解释,帮助读者掌握这一重要的数据持久化技术。 ... [详细]
  • 微软发布紧急安全更新,所有Windows 10版本均面临影响!
    微软于周五紧急发布了两项安全更新,旨在解决Windows 10所有版本中Windows Codecs库和Visual Studio Code应用存在的安全隐患。此次更新是继本周初发布的月度例行安全补丁之外的额外措施,凸显了这些问题的紧迫性和重要性。这些漏洞可能被攻击者利用,导致系统权限提升或远程代码执行等严重后果。建议用户尽快安装更新,以确保系统的安全性。 ... [详细]
  • 问题背景:在使用Struts2注解实现ZIP文件下载功能时,由于InputStream未正确关闭,导致Tomcat服务器异常终止。重启后,系统抛出`java.io.EOFException`错误。具体表现为,在文件下载过程中,如果请求未正常完成或客户端提前中断连接,未关闭的InputStream会占用资源,最终导致服务器资源耗尽,触发异常。为解决此问题,建议在代码中确保InputStream在使用完毕后能够及时且正确地关闭,以避免资源泄露和服务器崩溃。 ... [详细]
  • 通过采用JSON数据格式,能够高效且精确地获取用户的实时地理位置信息,为各类位置服务应用提供可靠的数据支持。该方法不仅简化了数据交换流程,还提高了地理信息处理的准确性和效率,适用于移动应用、导航系统及物联网设备等多种场景。 ... [详细]
  • 在处理Java程序时,中文乱码是一个常见的问题。本文将详细探讨导致中文乱码的原因,并分享有效的解决方案,帮助开发者在实际工作中避免这一问题。通过具体的代码示例和最佳实践,本文旨在提供全面的指导,确保中文字符在不同环境下的正确显示。 ... [详细]
author-avatar
宝贝缘缘儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有